/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tela.iptsp;

import ferramentas.CFG;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author ciar
 */
public class GeradorCSV_IPTSP {

    private String textoCSV = "";

    public GeradorCSV_IPTSP() {
        addCabecalho();
    }

    private void addCabecalho() {
        textoCSV = textoCSV.concat(
                "Nome;Nascimento;RG;Orgao Expedidor;CPF;Rua;Complemento;Bairro;Cidade;Estado;CEP;Telefone Residencial;"
                + "Celular;E-mail;Polo;Esfera SUS;Atividade profissional atual (a mais importante);Instituição;"
                + "Área;Período (mês/ano) Início;Graduação;Especialização;Mestrado;Doutorado;Outros;"
                + "Área de Interesse;Área de Incrição;Motivação;1.1;1.2;1.3;1.4;1.5;1.6;Total Grupo I;"
                + "2.1;2.2;2.3;2.4;2.5;Total Grupo II;3.1;3.2;3.3;3.4;3.5;3.6;3.7;3.8;3.9;3.10;3.11;"
                + "Total Grupo III;Diploma de graduação;Comprovante vínculo efetivo/Comprovante de matrícula;"
                + "Carta de compromisso;Termo de compromisso;Cópia RG;Cópia CPF;Termo Deslocamento\r\n");
    }

    public File gerarListaCSV(ResultSet inscritos, String caminhoArquivo) throws SQLException, UnsupportedEncodingException {
        while (inscritos.next()) {
            addUsuario(inscritos);
        }
        return geraArquivoCSV(caminhoArquivo);
    }

    private File geraArquivoCSV(String caminhoArquivo) throws UnsupportedEncodingException {
        File arquivo = new File(caminhoArquivo + getNomeArquivoCSV());
        try {
            PrintWriter pw = new PrintWriter(arquivo,"UTF-8");
            pw.write(textoCSV);
            pw.close();
            return arquivo;

        } catch (FileNotFoundException ex) {
            System.out.println("Erro ao gravar arquivo: " + arquivo.getAbsolutePath() + "\n\tCaminho: " + caminhoArquivo);
            return null;
        }
    }

    public String getNomeArquivoCSV() {
        return "lista_usuarios.csv";
    }

    private void addUsuario(ResultSet inscrito) throws SQLException {
        // ( Nome;Nascimento;RG;Orgao Expedidor;CPF;Rua;Complemento;Bairro;Cidade;Estado;CEP;Telefone Residencial;Celular;E-mail;Polo;Esfera SUS;Atividade profissional atual (a mais importante);Instituição;Área;Período (mês/ano);Início;Graduação;Especialização;Mestrado;Doutorado;Outros;Área de Interesse;Área de Incrição;Motivação;1.1;1.2;1.3;1.4;1.5;1.6;Total Grupo I;2.1;2.2;2.3;2.4;2.5;Total Grupo II;3.1;3.2;3.3;3.4;3.5;3.6;3.7;3.8;3.9;3.10;3.11;Total Grupo III;Diploma de graduação;Comprovante vínculo efetivo/Comprovante de matrícula;Carta de compromisso;Termo de compromisso )

        BigDecimal total_1 = BigDecimal.valueOf(inscrito.getInt("m1_1")).multiply(BigDecimal.valueOf(1.5d))
                            .add(BigDecimal.valueOf(inscrito.getInt("m1_2")).multiply(BigDecimal.valueOf(1.0d)))
                            .add(BigDecimal.valueOf(inscrito.getInt("m1_3")).multiply(BigDecimal.valueOf(0.5d)))
                            .add(BigDecimal.valueOf(inscrito.getInt("m1_4")).multiply(BigDecimal.valueOf(1.5d)))
                            .add(BigDecimal.valueOf(inscrito.getInt("m1_5")).multiply(BigDecimal.valueOf(1.0d)))
                            .add(BigDecimal.valueOf(inscrito.getInt("m1_6")).multiply(BigDecimal.valueOf(0.5d))).setScale(1, RoundingMode.HALF_EVEN);;
        if (total_1.compareTo(BigDecimal.valueOf(3d)) > 0) {
            total_1 = BigDecimal.valueOf(3d).setScale(1, RoundingMode.HALF_EVEN);
        }

        BigDecimal total_2 = BigDecimal.valueOf(inscrito.getInt("m2_1")).multiply(BigDecimal.valueOf(2.0d))
                .add(BigDecimal.valueOf(inscrito.getInt("m2_2")).multiply(BigDecimal.valueOf(1.0d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m2_3")).multiply(BigDecimal.valueOf(1.0d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m2_4")).multiply(BigDecimal.valueOf(1.0d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m2_5")).multiply(BigDecimal.valueOf(1.0d))).setScale(1, RoundingMode.HALF_EVEN);;
        if (total_2.compareTo(BigDecimal.valueOf(10d)) > 0) {
            total_2 = BigDecimal.valueOf(10d).setScale(1, RoundingMode.HALF_EVEN);
        }

        BigDecimal total_3 =  BigDecimal.valueOf(inscrito.getInt("m3_1")).multiply(BigDecimal.valueOf(1.0d))
                .add(BigDecimal.valueOf(inscrito.getInt("m3_2")).multiply(BigDecimal.valueOf(0.5d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m3_3")).multiply(BigDecimal.valueOf(0.8d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m3_4")).multiply(BigDecimal.valueOf(0.4d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m3_5")).multiply(BigDecimal.valueOf(0.6d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m3_6")).multiply(BigDecimal.valueOf(0.3d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m3_7")).multiply(BigDecimal.valueOf(0.5d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m3_8")).multiply(BigDecimal.valueOf(0.2d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m3_9")).multiply(BigDecimal.valueOf(0.8d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m3_10")).multiply(BigDecimal.valueOf(0.8d)))
                .add(BigDecimal.valueOf(inscrito.getInt("m3_11")).multiply(BigDecimal.valueOf(0.8d))).setScale(1, RoundingMode.HALF_EVEN);
        if (total_3.compareTo(BigDecimal.valueOf(7d)) > 0) {
            total_3 = BigDecimal.valueOf(7d).setScale(1, RoundingMode.HALF_EVEN);
        }

        textoCSV = textoCSV.concat(""
                + inscrito.getString("nome").replaceAll(";", "") + "; "
                + inscrito.getString("nascimento").replaceAll(";", "") + "; "
                + inscrito.getString("rg").replaceAll(";", "") + "; "
                + inscrito.getString("orgao_expedidor").replaceAll(";", "") + "; "
                + inscrito.getString("cpf").replaceAll(";", "") + "; "
                + inscrito.getString("rua").replaceAll(";", "") + "; "
                + (inscrito.getString("complemento") != null ? inscrito.getString("complemento").replaceAll(";", "") : "") + "; "
                + inscrito.getString("bairro").replaceAll(";", "") + "; "
                + inscrito.getString("cidade").replaceAll(";", "") + "; "
                + inscrito.getString("estado").replaceAll(";", "") + "; "
                + inscrito.getString("cep").replaceAll(";", "") + "; "
                + (inscrito.getString("telefone_residencial") != null ? inscrito.getString("telefone_residencial").replaceAll(";", "") : "") + "; "
                + (inscrito.getString("telefone_celular") != null ? inscrito.getString("telefone_celular").replaceAll(";", "") : "") + "; "
                + inscrito.getString("email").replaceAll(";", "") + "; "
                + inscrito.getString("polo").replaceAll(";", "") + "; "
                + inscrito.getString("esfera_sus").replaceAll(";", "") + "; "
                + inscrito.getString("atividade_profissional").replaceAll(";", "") + "; "
                + inscrito.getString("atividade_profissional_instituicao").replaceAll(";", "") + "; "
                + inscrito.getString("atividade_profissional_area").replaceAll(";", "") + "; "
                + inscrito.getString("atividade_profissional_inicio").replaceAll(";", "") + "; "
                + inscrito.getString("graduacao").replaceAll(";", "") + "; "
                + (inscrito.getString("pos_especializacao") != null ? inscrito.getString("pos_especializacao").replaceAll(";", "") : "Nenhum") + "; "
                + (inscrito.getString("pos_mestrado") != null ? inscrito.getString("pos_mestrado").replaceAll(";", "") : "Nenhum") + "; "
                + (inscrito.getString("pos_doutorado") != null ? inscrito.getString("pos_doutorado").replaceAll(";", "") : "Nenhum") + "; "
                + (inscrito.getString("formacao_outros") != null ? inscrito.getString("formacao_outros").replaceAll(";", "") : "Nenhum") + "; "
                + inscrito.getString("area_interesse").replaceAll(";", "") + "; "
                + inscrito.getString("area_incricao").replaceAll(";", "") + "; "
                + inscrito.getString("motivacao").replaceAll("\r\n", "").replaceAll(";", ",") + "; "
                + inscrito.getInt("m1_1") + "; "
                + inscrito.getInt("m1_2") + "; "
                + inscrito.getInt("m1_3") + "; "
                + inscrito.getInt("m1_4") + "; "
                + inscrito.getInt("m1_5") + "; "
                + inscrito.getInt("m1_6") + "; "
                + total_1 + "; "
                + inscrito.getInt("m2_1") + "; "
                + inscrito.getInt("m2_2") + "; "
                + inscrito.getInt("m2_3") + "; "
                + inscrito.getInt("m2_4") + "; "
                + inscrito.getInt("m2_5") + "; "
                + total_2  + "; "
                + inscrito.getInt("m3_1") + "; "
                + inscrito.getInt("m3_2") + "; "
                + inscrito.getInt("m3_3") + "; "
                + inscrito.getInt("m3_4") + "; "
                + inscrito.getInt("m3_5") + "; "
                + inscrito.getInt("m3_6") + "; "
                + inscrito.getInt("m3_7") + "; "
                + inscrito.getInt("m3_8") + "; "
                + inscrito.getInt("m3_9") + "; "
                + inscrito.getInt("m3_10") + "; "
                + inscrito.getInt("m3_11") + "; "
                + total_3  + "; "
                + "http://mercurio.ciar.ufg.br:8080/bridge_files/documentos/iptsp2/"+CFG.IPTSP2_COMPROVANTE_GRADUACAO+"/"+inscrito.getString("cpf").concat(inscrito.getString("extensao_arquivo1")) +"; "
                + "http://mercurio.ciar.ufg.br:8080/bridge_files/documentos/iptsp2/"+CFG.IPTSP2_COMPROVANTE+"/"+inscrito.getString("cpf").concat(inscrito.getString("extensao_arquivo2")) +"; "
                + "http://mercurio.ciar.ufg.br:8080/bridge_files/documentos/iptsp2/"+CFG.IPTSP2_CARTA_COMPROMISSO+"/"+inscrito.getString("cpf").concat(inscrito.getString("extensao_arquivo3")) +"; "
                + "http://mercurio.ciar.ufg.br:8080/bridge_files/documentos/iptsp2/"+CFG.IPTSP2_TERMO_COMPROMISSO+"/"+inscrito.getString("cpf").concat(inscrito.getString("extensao_arquivo4")) +"; "
                + "http://mercurio.ciar.ufg.br:8080/bridge_files/documentos/iptsp2/"+CFG.IPTSP2_COMPROVANTE_RG+"/"+inscrito.getString("cpf").concat(inscrito.getString("extensao_arquivo5")) +"; "
                + "http://mercurio.ciar.ufg.br:8080/bridge_files/documentos/iptsp2/"+CFG.IPTSP2_COMPROVANTE_CPF+"/"+inscrito.getString("cpf").concat(inscrito.getString("extensao_arquivo6")) +"; "
                + "http://mercurio.ciar.ufg.br:8080/bridge_files/documentos/iptsp2/"+CFG.IPTSP2_TERMO_DESLOCAMENTO+"/"+inscrito.getString("cpf").concat(inscrito.getString("extensao_arquivo7")) +" "
                + "\r\n");
    }
}
